package com.edu.compile.compiler;

import com.edu.compile.AbstractCompileResult;
import com.edu.compile.AbstractCompilerParser;
import com.edu.compile.config.CalcConfig;
import com.edu.compile.template.ftl.node.Calc;
import com.edu.model.dto.NodeMetadata;
import org.springframework.stereotype.Component;

@Component("calc_compiler")
public class CalcCompiler extends AbstractCompilerParser<CalcConfig, Calc> {

    @Override
    public void compile(AbstractCompileResult abstractCompileResult, NodeMetadata nodeMetadata, CalcConfig calcConfig, Calc calc) {

//        boolean loop = abstractCompileResult.isLoop();
//
//        CompileResult compileResult = (CompileResult) abstractCompileResult;
//        Calc calc = compileResult.getEventContainer().getNodeTemplateModel(calcNodeDto.getNodeId());
//        calc.setLoop(loop);
//
//        CalcParam calcParam = calcNodeDto.getCalcParam();
//        Integer source = calcParam.getSource();
//        String sourceValue = calcParam.getSourceValue();
//        Integer operateSign = calcParam.getOperateSign();
//
//        if (operateSign == 6) {
//            calc.setOperate("avg");
//        } else {
//            calc.setOperate(EventConstant.OperateSign[operateSign]);
//        }
//
//        String methodPrefix = getMethodPrefix(eventId);
//        String nodeId = calcNodeDto.getNodeId();
//
//        if (source == EventConstant.SourceConstant.FRO) {
//            sourceValue = replaceParam(abstractCompileResult, sourceValue, methodPrefix);
//        }
//        calc.setSourceValue(sourceValue);
//
//        Integer target;
//        String targetValue;
//        List<CalcTargetParam> targets = calcParam.getTargets();
//        CalcTargetParam targetParam;
//        for (int i = 0; i < targets.size(); i++) {
//            targetParam = calcParam.getTargets().get(i);
//            target = targetParam.getTarget();
//            targetValue = targetParam.getTargetValue();
//            if (target == EventConstant.SourceConstant.FRO) {
//                targetValue = replaceParam(abstractCompileResult, targetValue, methodPrefix);
//            }
//            calc.addArg(targetValue);
//        }
//        next(abstractCompileResult, eventId, nodeId);
    }
}
